package com.badboy.mycarbon.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.badboy.mycarbon.system.entity.SysDict;
import com.badboy.mycarbon.system.entity.SysDictItem;
import com.badboy.mycarbon.system.entity.query.SysDictItemQuery;
import com.badboy.mycarbon.system.entity.query.SysDictQuery;
import com.badboy.mycarbon.system.entity.vo.PageVO;

import java.util.List;

/**
 * 系统字典Service接口
 */
public interface SysDictService extends IService<SysDict> {
    /**
     * 获取系统字典分页列表
     * @param query 查询条件
     * @return 分页结果
     */
    PageVO<SysDict> getSysDictPageList(SysDictQuery query);

    /**
     * 添加系统字典
     * @param sysDict 字典实体
     */
    void addSysDict(SysDict sysDict);

    /**
     * 根据id逻辑删除字典
     * @param id 字典id
     */
    void deleteSysDict(Long id);

    /**
     * 根据字典码获取字典项
     * @param dictCode 字典码
     * @return 字典项列表
     */
    List<SysDictItem> getNameMapByCode(String dictCode);

    /**
     * 获取所有字典
     * @return 字典列表
     */
    List<SysDict> getAllDict();

    /**
     * 根据字典码更新字典
     * @param sysDict 字典实体
     */
    void updateByCode(SysDict sysDict);

    /**
     * 获取字典项目分页列表
     * @param query 查询条件
     * @return 分页结果
     */
    PageVO<SysDictItem> getSysDictItemPageList(SysDictItemQuery query);

    /**
     * 新增字典项
     * @param sysDictItem 字典项实体
     */
    void addSysDictItem(SysDictItem sysDictItem);

    /**
     * 修改字典项目
     * @param sysDictItem 字典项实体
     */
    void updateSysDictItemById(SysDictItem sysDictItem);

    /**
     * 删除子集字典项
     * @param id 字典项id
     */
    void removeSysDictItemById(Long id);

    /**
     * 获取城市字典码
     * @return 字典项列表
     */
    List<SysDictItem> getCityDict();

    /**
     * 获取领域字典码
     * @return 字典项列表
     */
    List<SysDictItem> getFieldDict();
}